home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / PASCAL / ALLSWAGS.ZIP / SWAGN-R.ZIP / NETWORK.SWG / 0038_Netware 3.11 API Library - NetInfo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-11-29  |  9.7 KB  |  326 lines

  1.  
  2. {
  3.             ╔══════════════════════════════════════════════════╗
  4.             ║     ┌╦═══╦┐┌╦═══╦┐┌╦═══╦┐┌╦═╗ ╦┐┌╦═══╦┐┌╔═╦═╗┐   ║
  5.             ║     │╠═══╩┘├╬═══╬┤└╩═══╦┐│║ ║ ║│├╬══      ║      ║
  6.             ║     └╩     └╩   ╩┘└╩═══╩┘└╩ ╚═╩┘└╩═══╩┘   ╩      ║
  7.             ║                                                  ║
  8.             ║     NetWare 3.11 API Library for Turbo Pascal    ║
  9.             ║                      by                          ║
  10.             ║                 S.Perevoznik                     ║
  11.             ║                     1996                         ║
  12.             ╚══════════════════════════════════════════════════╝
  13. }
  14.  
  15. Unit NetInfo;
  16.  
  17. Interface
  18.  
  19. Uses NetConv;
  20.  
  21. Function LogInNetWork : boolean;
  22. {True, if log in network}
  23.  
  24. Function GetFileServerInformation(Var ServerName                  : string;
  25.                                   Var NetWareVersion              : byte;
  26.                                   Var NetWareSubVersion           : byte;
  27.                                   Var MaximumConnectionsSupported : word;
  28.                                   Var ConnectionsInUse            : word;
  29.                                   Var MaximumVolumesSupported     : word;
  30.                                   Var RevisionLevel               : byte;
  31.                                   Var SFTLevel                    : byte;
  32.                                   Var TTSLevel                    : byte;
  33.                                   Var PeakConnectionsUsed         : word) : byte;
  34. {Return server information}
  35.  
  36. Function GetServerName(Var ServerName : string) : byte;
  37. { Return server name}
  38.  
  39. Function GetNetWorkSerialNumber(Var NetWorkSerialNumber : LongInt;
  40.                                 Var ApplicationNumber   : Integer) : byte;
  41. {Return network number and number application}
  42.  
  43. Function SetFileServerDateAndTime(year   : word;
  44.                                   month  : word;
  45.                                   day    : word;
  46.                                   hour   : word;
  47.                                   minute : word;
  48.                                   second : word) : byte;
  49. {Set server date and time}
  50.  
  51. Function GetFileServerDateAndTime(Var year   : word;
  52.                                   Var month  : word;
  53.                                   Var day    : word;
  54.                                   Var hour   : word;
  55.                                   Var minute : word;
  56.                                   Var second : word) : byte;
  57.  
  58. {Get server date and time}
  59.  
  60. Function GetConnectionNumber : byte;
  61. {Return current connection number}
  62.  
  63. Function GetNumberOfLocalDrives : byte;
  64. {Get number of local disks}
  65.  
  66. Function GetConnectionInformation(ConnectionNumber:byte;
  67.   Var ObjectName : string; var ObjectType : word;
  68.   var ObjectID   : longint; var LoginTime : string): byte;
  69. {Return current connection information}
  70.  
  71. Implementation
  72.  
  73. uses DOS;
  74.  
  75.  
  76. Function GetFileServerInformation(Var ServerName                  : string;
  77.                                   Var NetWareVersion              : byte;
  78.                                   Var NetWareSubVersion           : byte;
  79.                                   Var MaximumConnectionsSupported : word;
  80.                                   Var ConnectionsInUse            : word;
  81.                                   Var MaximumVolumesSupported     : word;
  82.                                   Var RevisionLevel               : byte;
  83.                                   Var SFTLevel                    : byte;
  84.                                   Var TTSLevel                    : byte;
  85.                                   Var PeakConnectionsUsed         : word) : byte;
  86.  
  87. var
  88.    r           : registers;
  89.    SendPacket  : array[0..3] of byte;
  90.    ReplyPacket : array[0..130] of byte;
  91.    WordPtr     : ^Word;
  92. begin
  93.   SendPacket[2] := 17;
  94.   WordPtr := addr(SendPacket);
  95.   WordPtr^ := 1;
  96.   WordPtr  := addr(ReplyPacket);
  97.   WordPtr^ := 128;
  98.  
  99.   r.BX := r.DS;
  100.   r.AH := $0E3;
  101.   r.DS := SEG(SendPacket);
  102.   r.SI := OFS(SendPacket);
  103.   r.ES := SEG(ReplyPacket);
  104.   r.DI := OFS(ReplyPacket);
  105.   intr($21,r);
  106.   r.DS := r.BX;
  107.   GetFileServerInformation := r.AL;
  108.   if r.AL = 0 then
  109.     begin
  110.       move(ReplyPacket[2],ServerName[1],48);
  111.       ServerName[0] := chr(48);
  112.       NetWareVersion := ReplyPacket[50];
  113.       NetWareSubVersion := ReplyPacket[51];
  114.       move(MaximumConnectionsSupported,ReplyPacket[52],2);
  115.       MaximumConnectionsSupported := Swap(MaximumConnectionsSupported);
  116.       move(ConnectionsInUse,ReplyPacket[54],2);
  117.       ConnectionsInUse := Swap(ConnectionsInUse);
  118.       move(MaximumVolumesSupported,ReplyPacket[56],2);
  119.       MaximumVolumesSupported := Swap(MaximumVolumesSupported);
  120.       RevisionLevel := ReplyPacket[58];
  121.       SFTLevel := ReplyPacket[59];
  122.       TTSLevel := ReplyPacket[60];
  123.       move(PeakConnectionsUsed,ReplyPacket[61],2);
  124.       PeakConnectionsUsed := swap(PeakConnectionsUsed);
  125.     end;
  126. end;
  127.  
  128. Function GetServerName(Var ServerName : string) : byte;
  129. var
  130.    r           : registers;
  131.    SendPacket  : array[0..3] of byte;
  132.    ReplyPacket : array[0..130] of byte;
  133.    WordPtr     : ^Word;
  134. begin
  135.   SendPacket[2] := 17;
  136.   WordPtr := addr(SendPacket);
  137.   WordPtr^ := 1;
  138.   WordPtr  := addr(ReplyPacket);
  139.   WordPtr^ := 128;
  140.  
  141.   r.BX := r.DS;
  142.   r.AH := $0E3;
  143.   r.DS := SEG(SendPacket);
  144.   r.SI := OFS(SendPacket);
  145.   r.ES := SEG(ReplyPacket);
  146.   r.DI := OFS(ReplyPacket);
  147.   intr($21,r);
  148.   r.DS := r.BX;
  149.   GetServerName := r.AL;
  150.   if r.AL = 0 then
  151.     begin
  152.       move(ReplyPacket[2],ServerName[1],48);
  153.       ServerName[0] := chr(48);
  154.     end;
  155. end;
  156.  
  157. Function GetNetWorkSerialNumber(Var NetWorkSerialNumber : LongInt;
  158.                                 Var ApplicationNumber   : Integer) : byte;
  159.  
  160. var
  161.    r           : registers;
  162.    SendPacket  : array[0..3] of byte;
  163.    ReplyPacket : array[0..8] of byte;
  164.    WordPtr     : ^Word;
  165. begin
  166.   SendPacket[2] := 18;
  167.   WordPtr := addr(SendPacket);
  168.   WordPtr^ := 1;
  169.   WordPtr  := addr(ReplyPacket);
  170.   WordPtr^ := 6;
  171.   r.BX := r.DS;
  172.   r.AH := $0E3;
  173.   r.DS := SEG(SendPacket);
  174.   r.SI := OFS(SendPacket);
  175.   r.ES := SEG(ReplyPacket);
  176.   r.DI := OFS(ReplyPacket);
  177.   intr($21,r);
  178.   r.DS := r.BX;
  179.   GetNetWorkSerialNumber := r.AL;
  180.   if r.AL = 0 then
  181.     begin
  182.       NetworkSerialNumber := GetLong(addr(ReplyPacket[2]));
  183.       ApplicationNumber   := GetWord(addr(ReplyPacket[6]));
  184.     end;
  185. end;
  186.  
  187. Function SetFileServerDateAndTime(year   : word;
  188.                                   month  : word;
  189.                                   day    : word;
  190.                                   hour   : word;
  191.                                   minute : word;
  192.                                   second : word) : byte;
  193. var
  194.    r           : registers;
  195.    SendPacket  : array[0..9] of byte;
  196.    ReplyPacket : array[0..2] of byte;
  197.    WordPtr     : ^Word;
  198.  
  199. begin
  200.  
  201.   WordPtr := addr(SendPacket);
  202.   WordPtr^ := 7;
  203.   SendPacket[2] := 202;
  204.   SendPacket[3] := year;
  205.   SendPacket[4] := month;
  206.   SendPacket[5] := day;
  207.   SendPacket[6] := hour;
  208.   SendPacket[7] := minute;
  209.   SendPacket[8] := second;
  210.   WordPtr  := addr(ReplyPacket);
  211.   WordPtr^ := 0;
  212.   r.BX := r.DS;
  213.   r.AH := $0E3;
  214.   r.DS := SEG(SendPacket);
  215.   r.SI := OFS(SendPacket);
  216.   r.ES := SEG(ReplyPacket);
  217.   r.DI := OFS(ReplyPacket);
  218.   intr($21,r);
  219.   r.DS := r.BX;
  220.   SetFileServerDateAndTime := r.AL;
  221. end;
  222.  
  223. Function GetFileServerDateAndTime(Var year   : word;
  224.                                   Var month  : word;
  225.                                   Var day    : word;
  226.                                   Var hour   : word;
  227.                                   Var minute : word;
  228.                                   Var second : word) : byte;
  229.  
  230. var
  231.    r           : registers;
  232.    ReplyPacket : array[0..7] of byte;
  233.    WordPtr     : ^Word;
  234.  
  235. begin
  236.   r.BX := r.DS;
  237.   r.AH := $0E7;
  238.   r.DS := SEG(ReplyPacket);
  239.   r.DX := OFS(ReplyPacket);
  240.   intr($21,r);
  241.   r.DS := r.BX;
  242.   GetFileServerDateAndTime := r.AL;
  243.   Year   := ReplyPacket[0];
  244.   Month  := ReplyPacket[1];
  245.   Day    := ReplyPacket[2];
  246.   Hour   := ReplyPacket[3];
  247.   Minute := ReplyPacket[4];
  248.   Second := ReplyPacket[5];
  249.   end;
  250.  
  251.  
  252. Function LogInNetWork : boolean;
  253. var r : registers;
  254. begin
  255.       LogInNetWork := false;
  256.       r.AX := $7A00;
  257.       Intr($2F,r);
  258.       if r.AL = $00 then
  259.       LogInNetWork := false else
  260.       LogInNetWork := true;
  261. end;
  262.  
  263. Function GetConnectionNumber : byte;
  264. var r : registers;
  265.  
  266. begin
  267.    r.BX := r.DS;
  268.    r.AH := $DC;
  269.    Intr($21,r);
  270.    r.DS := r.BX;
  271.    GetConnectionNumber := r.AL;
  272. end;
  273.  
  274. Function GetNumberOfLocalDrives : byte;
  275. var r : registers;
  276.  
  277. begin
  278.    r.BX := r.DS;
  279.    r.AH := $DB;
  280.    Intr($21,r);
  281.    r.DS := r.BX;
  282.    GetNumberOfLocalDrives := r.AL;
  283. end;
  284.  
  285. Function GetConnectionInformation(ConnectionNumber:byte;
  286.   Var ObjectName : string; var ObjectType : word;
  287.   var ObjectID   : longint; var LoginTime : string): byte;
  288.  
  289.   var
  290.     WordPtr:^Word;
  291.     r:registers;
  292.     SendPacket : array[0..4] of byte;
  293.     ReplyPacket : array[0..64] of byte;
  294.  
  295.     begin
  296.       SendPacket[2] := $16;
  297.       SendPacket[3] := ConnectionNumber;
  298.       WordPtr := addr(SendPacket);
  299.       WordPtr^:=2;
  300.       WordPtr := addr(ReplyPacket);
  301.       WordPtr^ := 62;
  302.       r.BX := r.DS;
  303.       r.DX := r.ES;
  304.       r.ah := $e3;
  305.       r.ds := seg(SendPacket);
  306.       r.si := ofs(SendPacket);
  307.       r.es := seg(ReplyPacket);
  308.       r.di := ofs(ReplyPacket);
  309.       intr($21,r);
  310.       r.DS := r.BX;
  311.       r.ES := r.DX;
  312.       GetConnectionInformation := r.al;
  313.       if r.al = 0
  314.         then
  315.         begin
  316.           ObjectID := GetLong(addr(ReplyPacket[2]));
  317.           ObjectType := GetWord(addr(ReplyPacket[6]));
  318.           move(ReplyPacket[8],ObjectName[1],48);
  319.           ObjectName[0] := chr(48);
  320.           move(ReplyPacket[56],LoginTime[1],7);
  321.           LoginTime[0] := chr(7);
  322.        end;
  323.           end;
  324.  
  325. end.
  326.